// TASK 板块的切片，包含：reducer  &  action-creator
import { createSlice } from "@reduxjs/toolkit";

const taskSlice = createSlice({
    // 设置切片的名字
    name: "task",
    // 设置此切片对应 reducer 中的初始状态
    initialState: {
        taskList: []
    },
    // 编写不同业务逻辑下，对公共状态的更改
    reducers: {
        getAllTaskList(state, action) {
            // state: redux中的公共状态信息 [基于immer库管理，无需自己再克隆了]
            // action：配发的行为对象，我们无需考虑行为标识的问题了，传递的其他信息，都是以 action.payload 传递进来的值
            state.taskList = action.payload;
        },
    }
})

/**
 * 从切片中获取 action：下面解构的方法和上面reducers中的方法，
 * 仅仅是函数名相同；方法执行，返回需要派发的行为对象；
 * 后期可以基于dispatch进行任务派发即可
 */
export const { getAllTaskList } = taskSlice.actions;

// 实现异步派发 [redux-thunk]
export const getAllTaskListAsync = () => async dispatch => {
    
}

// 从切片中获取reducer
export default taskSlice.reducer;